// * Element 常用表单校验规则

/**
 *  @rule 手机号
 */
export function checkPhoneNumber(value: any, callback: any) {
  const regexp =
    /^(((13[0-9]{1})|(15[0-9]{1})|(16[0-9]{1})|(17[3-8]{1})|(18[0-9]{1})|(19[0-9]{1})|(14[5-7]{1}))+\d{8})$/
  if (value === '') callback('请输入手机号码')
  if (!regexp.test(value)) {
    callback(new Error('请输入正确的手机号码'))
  } else {
    return callback()
  }
}

/**
 *  @rule 注册电话
 */
export function checkLoginPhone(value: any, callback: any) {
  const regexp =
    /^(((13[0-9]{1})|(15[0-9]{1})|(16[0-9]{1})|(17[3-8]{1})|(18[0-9]{1})|(19[0-9]{1})|(14[5-7]{1}))+\d{8})$/
  if (value === '') callback('请输入注册电话')
  if (!regexp.test(value)) {
    callback(new Error('请输入正确的注册电话'))
  } else {
    return callback()
  }
}
/**
 *  @rule 身份证号
 */
export function checkIDNumber(value: any, callback: any) {
  const regexp = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/
  if (value === '') callback('请输入身份证号')
  if (!regexp.test(value)) {
    callback(new Error('请输入正确的身份证号'))
  } else {
    return callback()
  }
}
/**
 *  @rule 身份证号
 */
export function checkIDNumberNoRequire(value: any, callback: any) {
  const regexp = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/
  if (value && !regexp.test(value)) {
    callback(new Error('请输入正确的身份证号'))
  } else {
    return callback()
  }
}

/**
 *  @rule 登录密码
 */
export function checkPassword(value: any, callback: any) {
  const regexp =
    /((^(?=.*[a-z])(?=.*[A-Z])(?=.*\W)[\da-zA-Z\W]{8,16}$)|(^(?=.*\d)(?=.*[A-Z])(?=.*\W)[\da-zA-Z\W]{8,16}$)|(^(?=.*\d)(?=.*[a-z])(?=.*\W)[\da-zA-Z\W]{8,16}$)|(^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])[\da-zA-Z\W]{8,16}$))/

  if (value === '') callback('请输入登录密码')
  if (!regexp.test(value)) {
    callback(new Error('密码为8-16位，大小写字母、数字、特殊字符中任意三种'))
  } else {
    return callback()
  }
}

/**
 *  @rule 邮箱
 */
export function checkEmail(value: any, callback: any) {
  const regexp =
    /^[A-Za-z0-9]+([_.][A-Za-z0-9]+)*@([A-Za-z0-9-]+\.)+[A-Za-z]{2,6}$/
  if (value === '') callback('请输入邮箱')
  if (!regexp.test(value)) {
    callback(new Error('请输入正确的邮箱格式'))
  } else {
    return callback()
  }
}

/**
 *  @rule 统一社会信用代码
 */
export function checkComCode(value: any, callback: any) {
  const regexp =
    /^([0-9A-HJ-NPQRTUWXY]{2}\d{6}[0-9A-HJ-NPQRTUWXY]{10}|[1-9]\d{14})$/
  if (value === '') callback('请输入统一社会信用代码')
  if (!regexp.test(value)) {
    callback(new Error('请输入正确格式的统一社会信用代码'))
  } else {
    return callback()
  }
}
